Visual lab
01

One platform

The hosting panel, the CMS, the form service, the DNS host and the staging server a studio used to juggle, as one Blutui project.

shipped

Open feature
k1 Many tools, one project concept once
Hosting panel
DNS host
Headless CMS
content_v7.xlsx
logins.txt
Image bucket
Staging server
Form service

Weka

weka.co.nz

Published
Hosting
Domains
Pages
Collections
Forms
Cassettes
Assets
Team

One project · one login · one invoice

Hosting panelInvoice overdue
DNS hostRecords pending
Headless CMSSeat limit reached
content_v7.xlsxEdited by 4 people
logins.txtShared by email
Image bucketStorage 94% full
Staging server3 weeks behind
Form serviceWebhook failing
02

Development to production

Build on a development cassette, send the client a preview to review, and make it live when they sign off.

shipped

Open feature
k1 Build, review, go live concept once

01 · DevelopmentYour studio

02 · ReviewThe client

03 · ProductionEveryone

$ courier push

✓ 14 files synced

weka.blutui.com Preview
Weka

Spring range

Shop now

Pīwakawaka Fantailnow

Re: Spring range preview

Love it. Ship it!

weka.blutui.comweka.co.nz Live
Weka

Spring range

Shop now
Published to weka.co.nz
03

Agency console

Every client project in one console: live and in development side by side, one login for the whole team.

shipped

Open feature
v1 The projects list once
Console — Projects Fig. 15
Fieldwork Agency
FA
Overview Projects Domains Settings

Projects (7)

+ Create project N
NS

Northwind Studio

northwind.blutui.com

Development
AP

Ada & Partners

ada_partners.blutui.com

Published
GH

Golden Hour

golden_hour.blutui.com

Published
B

Burgertorium

burgertorium.blutui.com

Published
FR

Frequencies Records

frequencies.blutui.com

Published
HD

Hollis Dental

hollis_dental.blutui.com

Development
FF

Field & Fern

fieldandfern.blutui.com

Published
7 projects · 5 published One login
v2 Create a project once
Console — Create project Fig. 16
Fieldwork Agency
FA
Overview Projects Domains Settings

Projects (8)(7)

+ Create project N
LB

Lumen Bakery

lumen_bakery.blutui.com

Development
NS

Northwind Studio

northwind.blutui.com

Development
AP

Ada & Partners

ada_partners.blutui.com

Published
GH

Golden Hour

golden_hour.blutui.com

Published
B

Burgertorium

burgertorium.blutui.com

Published
Press N · new project from a Canvas
c1 Create project dialog cutout once
Blutui
Search ⌘K RC
Overview Projects Domains Settings

Back

Create a new project

Let's light this candle and get creative.

Project name
Takahē
Create project
c2 The projects list cutout once
Kōtuku
Search ⌘K TS
Overview Projects Domains Settings

Projects

(24)

Archived
Create project N
W
Weka

weka.blutui.com

Open project
Transfer project
Archive project
P
Pūkeko

pukeko.blutui.com

K
Kea

kea.blutui.com

K
Kōkako

kokako.blutui.com

K
Ruru

ruru.blutui.com

K
Kākā

kaka.blutui.com

T
Tīeke

tieke.blutui.com

T
Toroa

toroa.blutui.com

04

Team

The whole studio on one agency: invite members, give each a role and an access level, and manage seats as the team grows.

shipped

Open feature
c1 Invite a member cutout once
Kōtuku
TS
Overview Projects Domains Settings
General Branding Team Roles

Team

Manage your team members and invitations.

Invite member
Team members Pending invitations
HS
Hihi Stitchbird Invited

hihi@kotuku.studio

Admin
KP
Kākāriki Parakeet

kakariki@kotuku.studio

Admin
KK
Kōtare Kingfisher

kotare@kotuku.studio

Owner
TS
Tauhou Silvereye 2FA you

tauhou@kotuku.studio

Owner
KF
Kārearea Falcon

karearea@kotuku.studio

Admin
RW
Riroriro Warbler

riroriro@kotuku.studio

Owner
05

Courier sync

Push local files to the platform from the terminal and watch them land on the live project.

shipped

Open feature
v1 Terminal stream loop
Courier — Push Fig. 01

$ courier push

Bundling views/ and public/…

↑ views/canopy/hero.canvas

↑ public/styles/global.css

Uploading cassette…

✓ Deployed to production in 4.2s▏

cassette default 2 files · 4.2s
v2 Local to cloud loop
Courier — Sync Fig. 02

Local · views/

canopy/hero.canvas
layouts/home.html
styles/global.css

Blutui · project

Northwind Studio

northwind.blutui.com

Live

courier dev 3 files synced
c1 Terminal stream cutout once
takahe — courier — 96×28

~/dev/takahe ❯ courier push

Bundling views/ and public/…

↑views/layouts/default.html2.4 KB

↑views/canopy/hero.canvas1.1 KB

↑public/styles/global.css18.7 KB

↑public/scripts/app.js9.3 KB

Uploading cassette ██████████ ██████████ 18% 76% 100%

✓ Deployed to production in 4.2s

  https://takahe.blutui.site

 

~/dev/takahe ❯

~/dev/takahe ❯ courier dev

Watching views/ and src/…

 

  https://localhost:8080

c2 Create a project cutout once
blutui — courier create — 96×28

…/Dev/blutui

→ blutui courier create

 

 ██████╗ ██████╗ ██╗   ██╗██████╗ ██╗███████╗██████╗
██╔════╝██╔═══██╗██║   ██║██╔══██╗██║██╔════╝██╔══██╗
██║     ██║   ██║██║   ██║██████╔╝██║█████╗  ██████╔╝
██║     ██║   ██║██║   ██║██╔══██╗██║██╔══╝  ██╔══██╗
╚██████╗╚██████╔╝╚██████╔╝██║  ██║██║███████╗██║  ██║
 ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝  ╚═╝╚═╝╚══════╝╚═╝  ╚═╝

 

? What is your project handle? › my-projecttakahe

06

Cassettes

Every project keeps versions of itself: build a redesign or a seasonal campaign on its own cassette and make it live when it is ready.

shipped

Open feature
c1 Create a cassette cutout once
PU Pūkeko
RC
Overview Branding Cassettes Domains

Cassettes

(3)(4)

Create Cassette
christmas

christmas

new-store

newstore

halloween

halloween

default Active

default

07

Roles and permissions

Roles the agency defines, each with its own permissions, so every teammate and freelancer sees only what they should.

shipped

Open feature
c1 Create a role cutout once
Blutui
RC
Overview Projects Domains Settings

Settings

General Branding Team Roles

Roles

Manage roles and permissions for your team.

Create role
Editor

Edit pages, collections and forms

0 users

Owner

No description

6 users

Admin

No description

2 users

Developer

No description

0 users

Freelancer

No description

0 users

k1 Who can do what concept loop

Team

TS KK HS KF

DeveloperFreelancerOwnerAdmin

8 of 17 permissions4 of 17 permissionsAll 17 permissions16 of 17 permissions

Projects

Read Write Delete Publish
Transfer Export

Domains

Read Write Delete

Teams

Read Invite Delete
Roles & permissions

Settings

Read Write Delete

Subscription & billing

Billing
08

Whitelabeling

The studio's own logo and colours on the console, so clients log in to the agency's brand rather than Blutui's.

shipped

Open feature
c1 Brand colours cutout once

Brand settings

Drop your brand and colour palette in to see what your agency eco-system will look like.

Primary colour

Used for buttons, links and other elements.

#242BFF#E8542B

Secondary colour

Used for secondary page elements.

#333333
Save changes
09

Domains

Every client domain in one place: add it, point it at a project and watch it connect, with a certificate.

shipped

Open feature
c1 Add a domain cutout once
Kōtuku
Search ⌘K TS
Overview Projects Domains Settings

Domains

(29)(30)

Add domain N
kakapo.nz

Added 11 Sep 2026

Status

Pending Connected
weka.co.nz

Added 4 Sep 2026

Status

Connected
pukeko.co.nz

Added 28 Aug 2026

Status

Connected
kaka.nz

Added 12 Jun 2026

Status

Connected
tieke.co.nz

Added 3 Jun 2026

Status

Connected
toroa.nz

Added 21 May 2026

Status

Connected
10

Hosting

Every project is hosted by Blutui: publish from the console and it is live on the client's own domain, with a certificate.

shipped

Open feature
v1 Publish once
Hosting — Publish Fig. 21
HD

Hollis Dental

hollisdental.co.nzhollis_dental.blutui.com

Published Development
Building cassette · default 2.1s
Issuing certificate · hollisdental.co.nz TLS
Live at https://hollisdental.co.nz 200
Published · 4.2sPublishing… Managed hosting
v2 Point the domain once
Hosting — Domains Fig. 22
hollisdental.co.nz
Active Verifying
TypeNameValueStatus
A @ 203.0.113.10 OK
CNAME www hollis_dental.blutui.com OK
TLS * Certificate · auto-renew Issued
https://hollisdental.co.nzhttps://hollis_dental.blutui.com
DNS verified · certificate issuedWaiting for DNS…
c1 Publish the site cutout once
WE Weka
Publish
TS
Overview Branding Cassettes Domains

Overview

W
Weka

weka.blutui.com weka.co.nz

Development Publishing… Published

Domain

weka.co.nz

Connected

Last published

Never Just now

11

MCP and skills

Blutui Context: a Courier MCP server and agent skills that teach any AI assistant to build Blutui projects properly.

shipped

Open feature
v1 Agent run once
Blutui Context — Agent run Fig. 13
You

Add a team page backed by a collection.

Skill blutui-project-guidelines → rules/collections.md loaded
MCP search_blutui_documentation("collections") 3 docs
MCP create_collection("team") created
MCP create_page("/team", "layouts/team.html") 201
Write views/layouts/team.html 42 lines
courier mcp server Done · 3 calls · 1 file Running…
v2 With and without once
Blutui Context — "Build the contact form" Fig. 14

Any assistant

<form action="/api/contact">

<input name="email">

<input name="message">

<button>Send</button>

</form>

Posts to nowhere · no spam scan

With Blutui Context

{% form 'contact' %}

{% for field in form.fields %}

{{ ui.field(field) }}

{% endfor %}

{% endform %}

Submissions in the console · AI scan on

skill · blutui-project-guidelines / forms.md courier mcp
c1 Allow the tool call cutout once
takahe — views/layouts/team.html
team.html default.html views/layouts

{% extends 'templates/default.html' %}

 

{% set team = cms.collection('team') %}

 

{% block body %}

<section class="mx-auto max-w-5xl px-6 py-20">

<h1>The team</h1>

<div class="mt-12 grid gap-10 @3xl:grid-cols-3">

{% for person in team %}

<article>

<p>{{ person.name }}</p>

<p>{{ person.role }}</p>

</article>

{% endfor %}

</div>

</section>

{% endblock %}

Assistant blutui

Add a team page backed by a collection.

Skill blutui-project-guidelines loaded
blutui wants to run a tool Awaiting you Allowed

create_collection

handle: "team"

fields: name, role, photo, email

Deny Allow
Collection team created · 4 fields
MCP create_page("/team") 201
Write views/layouts/team.html 42 lines

The page renders the collection with a Canvas loop, the way the Blutui rules ask for it.

Ask anything…
k1 Prompt to prototype concept once
Assistant

Prototype a spring landing page for Weka, with products and an enquiry form.

Working with Blutui Context…

Prototype ready at localhost:8080/spring

Ask anything…

Any AI assistant

Blutui Context

Skills

blutui-project-guidelines blutui-canopy-blocks

MCP

create_page create_collection create_form
localhost:8080/spring
Weka
hero · block

Spring range

Shop now
products · collection

New this season

$48
$36
$52
enquiry · form

Ask us anything

NameEmail
MessageSend
12

Design handoff

Take an agent's prototype into Figma or Paper to refine it, then bring the design back into the project as Canvas templates and Canopy blocks through MCP.

exploring

Open feature
k1 Prototype to frames concept once

Via MCP

HTML to
frames

The prototype

Into Figma or Paper

localhost:8080/spring
Weka

Spring range

Shop now

New this season

Ask us anything

NameEmail
MessageSend
T Weka / Spring landing TSHS Share
LayersAssets

Spring landing

Nav

Hero

Products

Enquiry

Frame

W1440 H720

Fill

FFFFFF

Auto layout

Gap 24

Spring landing

Weka

Spring range

Shop now

New this season

Ask us anything

NameEmail
MessageSend
1440 × 720
Hero
Products
Enquiry
k2 Frames to Canvas concept once

From Figma or Paper

Into Blutui Canvas

Spring landing

Weka

Spring range

Shop now

New this season

Ask us anything

NameEmail
MessageSend
Hero Products Enquiry
Agent MCP

Figma or Paperreads

Blutuiwrites

blutui-canopy-blocks

weka — views/canopy/hero.canvas

views

layouts

landing.htmlA

canopy

hero.canvasA

products.canvasA

enquiry.canvasA

{% canopy config %}
{ "title": "Hero",
  "name": "hero",
  "settings": [
    { "name": "heading",
      "type": "text" },
    { "name": "image",
      "type": "file" } ] }
{% endcanopy %}

{% canopy template %}
{% set image = settings.image %}
<section class="hero">
  <h1>{{ settings.heading }}</h1>
  <img src="{{ image.path }}">
</section>
{% endcanopy %}
13

Canvas

The templating language behind every Blutui page: loops, variables, filters and template inheritance in plain HTML.

shipped

Open feature
v1 Loop to list once
Canvas — team.html Fig. 11

{% for member in team %}

<article>

<h3>{{ member.name }}</h3>

<p>{{ member.role }}</p>

</article>

{% endfor %}▏

Rendered · /team

Ada Okafor Engineer
Sam Reid Producer
June Park Strategist
views/layouts/team.html 3 iterations · 12ms compiling…
v2 Block fills the shell loop
Canvas — layouts/home.html Fig. 12

{% extends 'templates/default' %}

 

{% block body %}

<section class="hero">

<h1>Book a visit</h1>

</section>

{% endblock %}

Studio
block body

Book a visit

See times
templates/default.html
extends default 1 block · body
c1 Template to page cutout once
goldenhomes.co.nz
home.html default.html views/layouts

{% extends 'templates/default.html' %}

 

{% set plans = cms.collection('plans')

| sort_by('order') | slice(0, 3) %}

 

{% block body %}

{{ include('components/hero.html') }}

 

{% for plan in plans %}

<article class="plan">

<h3>{{ plan.name }}</h3>

<p>{{ plan.beds }} bed · {{ plan.baths }} bath</p>

</article>

{% endfor %}

{% endblock %}

14

Canopy editor

Clients edit the page in place. Settings live beside the canvas and the design holds whatever they change.

shipped

Open feature
v1 Edit in place once
Canopy — Edit in place Fig. 03
Studio
Hero

Everything your studio ships withneeds

Start creating
Card
Card
Card

Hero · Settings

Heading

Everything your studio ships withneeds

Button

Start creating
Apply Save
v2 Blocks reorder loop
Canopy — Blocks Fig. 04

Blocks

⋮⋮Hero
⋮⋮Partners
⋮⋮Features
⋮⋮FAQ
+ Add block
Studio
Hero
Partners
Features
FAQ
c1 Add a block cutout once
Share Publish
Add block

Sections

Hero
Feature rows
Testimonials
Pricing
CTA band
Partners
Solution points
c2 Reorder two blocks cutout once
Korimako*
Home/
Pages Blocks

Home

main 8
Hero
Recipes feature recipes
Product showcase
Tradition strapline
Heritage intro
Stockists
Sustainability
Contact
KORIMAKO ProductsRecipesStory

Recipes

Three ways with Kiwi & Lime

Long, short and alcohol-free · five minutes each

The range

Indian Tonic200ml · 4 pack
Ginger Ale200ml · 4 pack
Kiwi & Lime200ml · 4 pack

Made the long way round.

15

Collections

Structured content in tables the studio designs, rendered anywhere with a Canvas loop.

shipped

Open feature
v1 Rows arrive once
Collections — Team Fig. 05
NameRoleTeam
Ada Okafor Engineer Product
Sam Reid Producer Studio
June Park Strategist Growth
Theo Lind Designer Product
4 entries · schema v2 + New entry
c1 New entry cutout once
KEKererū
Search⌘KRC

Navigation

navigation

Schema editor New entry N

39 entries40 entries

Columns
MenuLabelURL
CompanyCareers/careers
ShopShop/shop
PricingPricing/pricing
CompanyServices/services
CompanyCase Studies/case-studies
CompanyArticles/articles
CompanyContact/contact
CompanyTeam/team
CompanyOur Story/our-story
ResourcesResources/resources
16

Pages

Every page of the site in one list: add one, give it a URI and a layout, and it is live.

shipped

Open feature
c1 New page cutout once
KEKererū
Search⌘KRC

Pages

New page N
NameURIStatus
Careers/careersActive
Pricing/pricingActive
Services/servicesActive
Case studies/case-studiesActive
Journal/journalActive
About/aboutActive
Team/teamActive
Contact/contactActive
Our story/our-storyActive
Home/Active
17

Blogs

As many blogs as the site needs, each post written, scheduled and published from the admin panel.

shipped

Open feature
c1 Publish a post cutout once
KEKererū
Search⌘KRC

New post

CancelPublish post
Post published
Title
Designing a booking flow for Toroa Clinics
Paragraph

Toroa Clinics came to us with a booking form five steps long. Most people never reached the end of it.

“Nobody books an appointment for fun. Get out of their way.”

So we started again from the one question the clinic actually needs answered first: who are you, and when can you come in? Everything else — the referral, the insurer, the reason for the visit — moved to a single screen after the slot is held.

The rebuilt flow is two steps. Bookings are up by a third, and the front desk spends its mornings on people rather than on the phone.

18

Menus

The site's navigation built in the admin panel: order the items, nest them into dropdowns and point each one at a page.

shipped

Open feature
c1 Add a sub-item cutout once
KEKererū
Search⌘KRC

Main Menu

CancelSave menu

Menu items

Studio

#
Active

Careers

Careers (/careers)
Active
Add sub-item

Work

Case studies (/case-studies)
Active

Journal

Journal (/journal)
Active
19

SEO

Every page carries its own meta title, description and search settings, edited beside the page itself.

shipped

Open feature
c1 Meta title cutout once
KEKererū
Search⌘KRC

Edit page

CancelSave page
Page saved

SEO settings

Meta title
Careers at Kererū | Design and engineering jobs

/80 · This will appear in search results.

Meta description
Join Kererū, a design and build studio in Wellington. See how we work, what we make and apply for open design, engineering and project roles.

141/320 · This will appear in search results.

Hide from search results
Don’t follow links
20

Assets

Every image and file for the site in one library, uploaded once and served from the CDN.

shipped

Open feature
c1 Upload files cutout once
KEKererū
Search⌘KRC

Assets

New folder Upload files
Search assets...

SPRING

spring-campaign.webp

48 KB

kererū

kereru-logo.svg

3.1 KB

studio-hero.webp

212 KB

team-offsite.jpg

386 KB

KEA

case-kea.webp

22 KB

pattern-grid.png

9.4 KB

K

favicon.png

1.2 KB

21

CDN

Every published site and every asset is served from Blutui's global CDN: cached at the edge, close to the visitor, so pages and images arrive in milliseconds.

shipped

Open feature
v1 The edge, on a globe hover
CDN — Edge network Fig. 26
27 edge locations EdgeOrigin

AKL50-P1

Auckland · 3 hits · 1 miss

  • hero.webpmiss120 ms
  • app.jshit11 ms
  • case-kea.webphit16 ms
  • inter.woff2hit21 ms
Origin · ap-southeast-2 · Sydney
c1 Hit from the edge cutout once
kereru.co.nz
ElementsConsoleSourcesNetworkPerformanceMemoryApplication» ⋮×
Preserve log Disable cache No throttling
NameStatusTypeSizeTime
kereru.co.nz200document14.2 kB38 ms
global.css200stylesheet8.1 kB12 ms
hero.jpg?width=1440&format=webp200webp96.4 kB21 ms
app.js200script24.6 kB14 ms
space-grotesk.woff2200font41.0 kB18 ms
team-offsite.jpg?width=800&format=webp200webp38.2 kB16 ms
case-kea.jpg?width=800&format=webp200webp22.9 kB15 ms
kereru-logo.svg200svg+xml3.1 kB9 ms
inter.woff2200font36.4 kB17 ms
pattern-grid.png?format=webp200webp4.8 kB11 ms
favicon.ico200x-icon1.2 kB8 ms
case-toroa.jpg?width=800&format=webp200webp27.5 kB14 ms
case-kokako.jpg?width=800&format=webp200webp31.0 kB15 ms
map-tile.png?format=webp200webp6.6 kB10 ms
× HeadersPreviewResponseInitiatorTimingCookies

Response Headers Raw

age84213

cache-controlpublic, max-age=31536000, immutable

content-typeimage/webp

via1.1 8f2a1c3e7b5d.cloudfront.net (CloudFront)

x-amz-cf-popAKL50-P1

x-cacheHit from cloudfront

c2 The edge, on a globe cutout hover
AKL50-P1 Auckland
  • hero.webpmiss120 ms
  • app.jshit11 ms
22

Image optimisation

Upload the original once and the CDN resizes and converts it on the fly: one image_url filter in the template, or two parameters on the URL, and a 4 MB photo is a 96 kB webp.

shipped

Open feature
c1 Two parameters cutout once
kereru.co.nz
ElementsConsoleSourcesNetwork» ⋮×

<!DOCTYPE html>

▼<html lang="en" class="js">

▶<head>…</head>

▼<body class="antialiased">

▶<header class="site-header">…</header>

▼<main>

▼<section class="hero">

▶<h1 class="hero-title">…</h1>

▶<p class="hero-lede">…</p>

▼<figure class="hero-media">

<img src="https://cdn.blutui.com/uploads/kereru/hero.jpg

"?width=1200&format=webp" alt="Kererū studio at dusk" class="hero-img" width="1200" height="800">== $0

</figure>

</section>

▶<section class="projects">…</section>

</main>

▶<footer class="site-footer">…</footer>

</body>

</html>

Rendered size1200 × 800 px

Intrinsic size4000 × 2667 px

File size3.8 MB

Current sourcehttps://cdn.blutui.com/uploads/kereru/hero.jpg

Rendered size1200 × 800 px

Intrinsic size1200 × 800 px

File size96.4 kB

Current sourcehttps://cdn.blutui.com/uploads/kereru/hero.jpg?width=1200&format=webp

htmlbodymainsection.herofigure.hero-mediaimg.hero-img
StylesComputedLayoutEvent Listeners»
Filter :hov.cls+

element.style {

}

.hero-img {global.css:214

width: 100%;

height: auto;

display: block;

}

img, video {global.css:38

max-width: 100%;

height: auto;

}

23

Collection builder

Design a collection schema in the console: add a field, name it, pick its type, and every entry gets it.

shipped

Open feature
v1 Add a field once
Collections — Schema · Team Fig. 06
FieldType
Name Text
Role Text
Team Select
Start date Date Number Text
+ Add field 4 fields · schema v3 3 fields · schema v2
v2 Schema to table once
Collections — Team Fig. 07

Schema

NameText
RoleText
TeamSelect
OfficeSelect

+ Add field

NameTeamOffice
Ada OkaforProductAuckland
Sam ReidStudioWellington
June ParkGrowthRemote
Theo LindProductAuckland
4 fields · 4 entries schema v3
c1 Add field sheet cutout once
KEKererū
Search⌘KRC

Navigation

CancelSave
FieldsLinks
Menu

menu

Text
Menu Order

menu_order

Number
Kind

kind

Select
Icon

icon

Text
Add field

Add field

Choose a field type to add.

Text

Text

Single line of text for names, titles, or short values

Text Area

Multi-line plain text for descriptions or notes

Rich Text

Formatted text with headings, lists, and styling

Email

Email address with validation

Phone

Phone number input

URL

Web address or link

Number

Number

Numeric value with optional min, max, and step

Choice

Select

Dropdown list to pick one option

Radio

Choose one option from a visible list

Checkbox

Select multiple options from a list

24

Headless

The Project API and SDK: the same collections and forms behind the Canvas site, served as JSON to any front end.

shipped

Open feature
v1 Edit once, everywhere loop
Headless — Project API Fig. 17

Collections · Locations

Location

Ponsonby Clinic

Closes

6:00 pm5:00 pm

Saved

Website · Canvas

Ponsonby Clinic 6:00 pm5:00 pm

iOS app · SDK

Ponsonby Clinic 6:00 pm5:00 pm

Front desk · Kiosk

Ponsonby Clinic 6:00 pm5:00 pm
/api/collections/locations 3 fronts
v2 Request, response once
Headless — GET /api/collections Fig. 18

$ curl https://northwind.blutui.com \

/api/collections/team/entries \

-H "Authorization: \

Bearer bt_publishable_…"▏

{

"object": "list",

"data": [

{ "name": "Ada Okafor", "role": "Engineer" },

{ "name": "Sam Reid", "role": "Producer" },

{ "name": "June Park", "role": "Strategist" }

],

"meta": { "total": 4 }

}

Project API · publishable key 200 OK · 41msSending…
c1 Create a token cutout once
KE Kererū
RC
Overview Cassettes Headless Settings

Access tokens

(2)(3)

Create token
Storefront

bt_publishable_7Qa9NfLc2VtR8xJm

Copy
iOS app

bt_publishable_••••••••4c1e

Front desk display

bt_publishable_••••••••9f30

Project API

Every collection, form, menu and page in this project, as JSON.

curl https://kereru.blutui.com/api/collections
25

Form spam scan

Every submission is scanned by AI before it reaches the inbox, so studios only see real enquiries.

exploring

Open feature
v1 Sort the inbox once
Forms — Submissions Fig. 08
Riley Morgan — Site rebuild for a studio 09:12
Best offer — Rank #1 on Google today!!! Blocked
Ada Okafor — Quote for a clinic website 08:47
crypto_king88 — Guaranteed returns, click here Blocked
Golden Hour — Photography site refresh Yesterday
3 clean · 2 blocked 5 submissions · scanning AI scan
26

Form builder

Assemble a form from a palette of fields and configure each one, with the live form beside you.

shipped

Open feature
v1 Drag a field in loop
Forms — Builder · Contact Fig. 09

Fields

Text
Email
Phone
Select
Textarea

Name

Riley Morgan

Email

riley@northwind.studio

Phone

+44 20 7946 0000

Message

We're after a studio…
Send message
4 fields AI spam scan on
v2 Field settings once
Forms — Builder · Field settings Fig. 10

Name

Riley Morgan

Budget*

Choose a budget

Message

We're after a studio…

Budget · Select

Label

Budget

Required

Options

Under £5k
£5k – £15k
£15k +
Apply Save
c1 Add a field cutout once
KEKererū
Search⌘KRC

Project enquiry

CancelSave
FieldsSettings
Name

name

Text
Email

email

Email
Phone

phone

Phone
Add field
27

Webhooks

Project events pushed to any endpoint the moment they happen: a form submission lands in Slack, Zapier or a CRM.

shipped

Open feature
v1 Fire on submit once
Webhooks — form.submission.created Fig. 19

Forms · Contact

Name

Riley Morgan

Email

riley@northwind.studio
Send message

Slack · #leads

B

New enquiry · Riley Morgan

riley@northwind.studio

CRM · Leads

Riley Morgan New
form.submission.created 2 delivered · 200Listening…
v2 Delivery log once
Settings — Webhooks · Deliveries Fig. 20
EventStatus
form.submission.created 200 · 84ms
post.created 200 · 120ms
form.submission.created 200 · 61ms
form.updated 500 · retry
form.updated · retry 1 200 · 96ms
3 endpoints 5 deliveries · 1 retriedListening…
c1 Subscribe to an event cutout once
KEKererū
Search⌘KRC
Home

General

PagesAssetsFormsMenus

Blogs

Case StudiesJournalArticles

Collections

NavigationTeamLocationsFAQTestimonialsOpening Hours

Settings

Website detailsMeta & SEOSitemapUsersVerified emailsFormsRedirectsRoute patternsCode injectionWebhooks

Webhooks

New webhook
URLEventsStatus
https://hooks.slack.com/services/T04/B071 eventActive
https://crm.kereru.studio/sync3 eventsActive

New webhook

Endpoint URL
https://https://hooks.zapier.com/hooks/catch/8241/a1b2c3
Select events to listen to
Collection6 events
collection.created
collection.deleted
collection.updated
collection.entry.created
collection.entry.deleted
collection.entry.updated
Form5 events
form.created
form.deleted
form.updated
form.submission.created
form.submission.deleted
Post1 event
post.created
CreateCancel
28

Redirects

Retire a path without losing it: every old URL keeps working, sending visitors and search engines to the page that replaced it.

shipped

Open feature
c1 Retire a path cutout once
KEKererū
Search⌘KRC
Home

General

PagesAssetsFormsMenus

Blogs

Case StudiesJournalArticles

Collections

NavigationTeamLocationsFAQTestimonialsOpening Hours

Settings

Website detailsMeta & SEOSitemapUsersVerified emailsFormsRedirectsRoute patternsCode injectionWebhooks

Redirects

New redirect
FromTo
/about-us/about
/journal/articles
/services/branding/work/branding
/team/hihi/people/hihi
/competition/

New redirect

From
/terms
To
//fair-use
CancelCreate redirectCreate redirect
Redirect created/terms → /fair-use
29

Route patterns

One layout serves a whole collection: describe the URL once and every entry gets its own page, no pages to create by hand.

shipped

Open feature
c1 Add a dynamic segment cutout once
KEKererū
Search⌘KRC
Home

General

PagesAssetsFormsMenus

Blogs

Case StudiesJournalArticles

Collections

NavigationTeamLocationsFAQTestimonialsOpening Hours

Settings

Website detailsMeta & SEOSitemapUsersVerified emailsFormsRedirectsRoute patternsCode injectionWebhooks

Route patterns

New pattern
PatternTemplate
/journal/:sluglayouts/article.html
/locations/:sluglayouts/location.html
/work/:sluglayouts/case-study.html
/ambassadors/:sluglayouts/ambassador.html
/people/:sluglayouts/person.html

New route pattern

Pattern

Hint: Use pattern templates below to create a new pattern.

stringslugdatetimenumber
stringslug

Preview: yoursite.url/stringyoursite.url/string/{slug}

TemplateChoose a templateUsing Cassette:default
CreateCancel
30

Footer logo

The wordmark as ASCII art for the site footer: "blutui" in binary, streamed through the letters, with a pointer interaction to choose.

exploring

Open feature
v1 Spotlight hover
Footer — Logo · Spotlight Fig. 23
    0                                                                                                                                                          11000                                                                                                                                              1001     1011000                                                                                                                                           11101010  111010001                                    110                                               101011                                              01001011  000100110                                  1100011                                            10101011                                            1010001110 101011010                                  01011000                                           10011011                                             00011101  010111010                                 001110101                                           01101001                                              011000   100110110                                 001110101                                           01110100                                                       011101010                                 110100101                                           10001001                                                       101100011                                 101010111                                           01000111                                                       010101101                                 001011000                                           10011011                                                       000111010   10111010001110                101011010       010110                 001001       10110001110101011101000                 111010        101101   0010110001001101100011101010              111010001      11010101               10100101      100010011011000111010101               11010001      11010101  101001011000100110110001110101            011101000      11101010               11010010      110001001101100011101010               11101000      11101010  11010010110001001101100011101010          111010001      11010101               10100101      100010011011000111010101               11010001      11010101  101001011000100110110001110101011         101000111      01010110               10010110      001001101100011101010111               01000111      01010110  10010110001001         10110001110        101011101      00011101               01011010      01011000        10011011               00011101      01011101  000111010101              101001011       000100110      11000111               01010111      01000111        01010110               10010110      00100110  11000111010                101110100      011101010      11010010               11000100      11011000        11101010               11101000      11101010  1101001011                  00010011      011000111      01010111               01000111      01010110        10010110               00100110      11000111  010101110                    10001110     101011010      01011000               10011011      00011101        01011101               00011101      01011010  010110001                    00110110     001110101      01110100               01110101      01101001        01100010               01101100      01110101  011101000                    11101010     110100101      10001001               10110001      11010101        11010001               11010101      10100101   1000100                     11011000     111010101      11010001               11010101      10100101        10001001               10110001      11010101   1101000                     11101010     110100101      10001001               10110001      11010101        11010001               11010101      10100101     100                       01001101     100011101      01011101               00011101      01011010        01011000               10011011      00011101                              01011101      000111010      10110100               10110001      00110110        00111010               10111010      00111010                             101101001      011000100      110110001             11010101       11010001        110101011             010010110      00100110                            110001110       101011101       000111010           101101001       01100010         011011000           111010101       11010001                         11010101101        001011000       1001101100        0111010101        11010001         1101010110        1001011000        10011011               00011101010111010001         110101011        01001011000100110110001110         10101110          100011101010110100101100010        01101100              01110101011101000111          010101101         001011000100110110001110          10101110           1000111010101101001011000         10011011             00011101010111010001           110101011           010010110001001101100           01110101             011101000111010101101           00101100              01001101100011101              0101110             100011101010110100             10110001              001101100011101010             11101000               1110101011010                  01011                 0001001101100                011101                  0101110100011                101010                     11                          0                         1                                                    0                              
0110 0010 0110 1100 0111 0101 0111 0100 0111 0101 0110 1001
v2 Ripple hover
Footer — Logo · Ripple Fig. 24
0110 0010 0110 1100 0111 0101 0111 0100 0111 0101 0110 1001
v3 Bit flip hover
Footer — Logo · Bit flip Fig. 25
0110 0010 0110 1100 0111 0101 0111 0100 0111 0101 0110 1001

Drag to pan · ⌘ + scroll or pinch to zoom · 0 fit · 1 actual size

100%
Size